package cn.tworice.client.service.impl;

import cn.tworice.client.dao.GradesDao;
import cn.tworice.client.service.GradesService;
import cn.tworice.common.entity.Grades;
import cn.tworice.common.entity.Paper;
import cn.tworice.common.entity.dto.GradesDto;
import cn.tworice.common.entity.dto.PaperDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.UUID;

@Service
public class GradesServiceImpl implements GradesService {
    @Autowired
    private GradesDao gradesDao;

    /**
     * 获取未批阅以及考试时间结束的试卷
     * @Author 二饭
     * @Email 1786705138@qq.com
     * @Date 2021/12/26 17:14
     */
    @Override
    public List<PaperDto> getNotPaper(Integer page, Integer pageSize) {

        return gradesDao.queryNotPaper(System.currentTimeMillis(),page*pageSize,pageSize);
    }

    @Override
    public Integer getNotPaperTotal() {
        return gradesDao.queryNotPaperTotal(System.currentTimeMillis());
    }

    /**
     * 根据试题ID和用户ID获取主观题答卷
     * @Author 二饭
     * @Email 1786705138@qq.com
     * @Date 2021/12/26 18:27
     */
    @Override
    public List<PaperDto> getObjectivePaper(Paper paper) {
        return gradesDao.queryObjectivePaper(paper);
    }

    /**
     * 提交成绩
     * @Author 二饭
     * @Email 1786705138@qq.com
     * @Date 2021/12/26 19:51
     */
    @Override
    public void setGrades(List<Grades> list,String examId,String adminId) {
        if(!list.isEmpty()) {
            // 设置该试卷ID和用户ID的 试卷为已阅卷状态
            gradesDao.updateStatusToPaper(examId,adminId);
            // 获得该试卷的客观题每题分数
            List<Grades> grades=gradesDao.queryObjectiveScoreByPaper(examId,adminId);
            // 合并客观题和主观题
            for(Grades grades1:list){
                grades.add(grades1);
            }
            // 设置成绩表内容
            for (Grades grades1:grades){
                grades1.setId(UUID.randomUUID().toString().replaceAll("-", ""));
            }
            gradesDao.insertGrades(grades, System.currentTimeMillis());
        }
    }

    /**
     * 通过用户ID获取用户成绩信息
     * @Author 二饭
     * @Email 1786705138@qq.com
     * @Date 2021/12/27 15:56
     */
    @Override
    public List<GradesDto> getGrades(String adminId, Integer page, Integer pageSzie) {
        return gradesDao.queryGradesByAdminId(adminId,page*pageSzie,pageSzie);
    }

    /**
     * 通过用户ID获取用户的成绩信息总数
     * @Author 二饭
     * @Email 1786705138@qq.com
     * @Date 2021/12/27 15:56
     */
    @Override
    public Integer getGradesTotal(String adminId) {
        return gradesDao.queryGradesTotal(adminId);
    }
}
